package com.founder.devwork.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.NonNull;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * CORSWebConfig 用于在开发环境下配置跨域资源共享（CORS）设置。
 * 仅在 "dev" profile 下生效，允许前端本地开发服务器访问后端接口。
 */
@Configuration
public class CORSWebConfig implements WebMvcConfigurer {

    @Value("${cors.address}")
    private String address;

    @Value("${cors.port}")
    private String port;

    /**
     * 配置跨域映射，允许来自 http://localhost:8081 的请求访问所有接口。
     * 允许的 HTTP 方法包括 GET、POST、PUT、DELETE、OPTIONS。
     * 允许所有请求头，并支持携带凭证（如 Cookie）。
     *
     * @param registry CORS 注册表
     */
    @Override
    public void addCorsMappings(@NonNull CorsRegistry registry) {
        registry
            .addMapping("/**") // 允许所有路径
            .allowedOrigins("http://" + address + ":" + port) // 允许的前端地址
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的方法
            .allowedHeaders("*") // 允许所有请求头
            .allowCredentials(true); // 允许携带凭证
    }
}
